<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>VisualEditor Tests</title>

		<!-- jsdifflib -->
		<link rel=stylesheet href="../lib/jsdifflib/diffview.css">

		<!-- qunit -->
		<link rel=stylesheet href="../node_modules/qunit/qunit/qunit.css">

	</head>
	<body>
		<div id="qunit"></div>
		<div id="qunit-fixture">Loading QUnit. Ensure you have run <code>npm install</code>.</div>

		<!-- jsdifflib -->
		<script src="../lib/jsdifflib/diffview.js"></script>
		<script src="../lib/jsdifflib/difflib.js"></script>

		<!-- qunit -->
		<script src="../node_modules/qunit/qunit/qunit.js"></script>

		<!-- jquery -->
		<script src="../lib/jquery/jquery.js"></script>

		<!-- oojs -->
		<script src="../lib/oojs/oojs.jquery.js"></script>

		<!-- oojs-ui -->
		<script src="../lib/oojs-ui/oojs-ui-core.js"></script>
		<script src="../lib/oojs-ui/oojs-ui-widgets.js"></script>
		<script src="../lib/oojs-ui/oojs-ui-toolbars.js"></script>
		<script src="../lib/oojs-ui/oojs-ui-windows.js"></script>

		<!-- oojs-ui-apex -->
		<script src="../lib/oojs-ui/oojs-ui-apex.js"></script>

		<!-- CLDRPluralRuleParser -->
		<script src="../lib/jquery.i18n/libs/CLDRPluralRuleParser/src/CLDRPluralRuleParser.js"></script>

		<!-- jquery.i18n -->
		<script src="../lib/jquery.i18n/src/jquery.i18n.js"></script>
		<script src="../lib/jquery.i18n/src/jquery.i18n.messagestore.js"></script>
		<script src="../lib/jquery.i18n/src/jquery.i18n.parser.js"></script>
		<script src="../lib/jquery.i18n/src/jquery.i18n.emitter.js"></script>
		<script src="../lib/jquery.i18n/src/jquery.i18n.emitter.bidi.js"></script>
		<script src="../lib/jquery.i18n/src/jquery.i18n.language.js"></script>
		<script src="../lib/jquery.i18n/src/jquery.i18n.fallbacks.js"></script>
		<script src="../lib/jquery.i18n/src/languages/bs.js"></script>
		<script src="../lib/jquery.i18n/src/languages/dsb.js"></script>
		<script src="../lib/jquery.i18n/src/languages/fi.js"></script>
		<script src="../lib/jquery.i18n/src/languages/ga.js"></script>
		<script src="../lib/jquery.i18n/src/languages/he.js"></script>
		<script src="../lib/jquery.i18n/src/languages/hsb.js"></script>
		<script src="../lib/jquery.i18n/src/languages/hu.js"></script>
		<script src="../lib/jquery.i18n/src/languages/hy.js"></script>
		<script src="../lib/jquery.i18n/src/languages/la.js"></script>
		<script src="../lib/jquery.i18n/src/languages/ml.js"></script>
		<script src="../lib/jquery.i18n/src/languages/os.js"></script>
		<script src="../lib/jquery.i18n/src/languages/ru.js"></script>
		<script src="../lib/jquery.i18n/src/languages/sl.js"></script>
		<script src="../lib/jquery.i18n/src/languages/uk.js"></script>

		<!-- jquery.uls.data -->
		<script src="../lib/jquery.uls/src/jquery.uls.data.js"></script>
		<script src="../lib/jquery.uls/src/jquery.uls.data.utils.js"></script>

		<!-- jquery.client -->
		<script src="../lib/jquery.client/jquery.client.js"></script>

		<!-- papaparse -->
		<script src="../lib/papaparse/papaparse.js"></script>

		<!-- unicodejs -->
		<script src="../lib/unicodejs/unicodejs.js"></script>

		<!-- rangefix -->
		<script src="../lib/rangefix/rangefix.js"></script>

		<!-- spark-md5 -->
		<script src="../lib/spark-md5/spark-md5.js"></script>

		<!-- visualEditor.core.ve -->
		<script src="../src/ve.js"></script>

		<!-- visualEditor.core.utils -->
		<script src="../src/ve.utils.js"></script>
		<script src="../src/ve.TriggerListener.js"></script>
		<script src="../src/ve.track.js"></script>

		<!-- visualEditor.core.utils.parsing -->
		<script src="../src/ve.utils.parsing.js"></script>

		<!-- visualEditor.supportCheck -->
		<script src="../src/init/ve.init.SupportCheck.js"></script>

		<!-- visualEditor.core.init -->
		<script src="../src/init/ve.init.js"></script>
		<script src="../src/init/ve.init.SafeStorage.js"></script>
		<script src="../src/init/ve.init.ListStorage.js"></script>
		<script src="../src/init/ve.init.Platform.js"></script>
		<script src="../src/init/ve.init.Target.js"></script>

		<!-- dompurify -->
		<script src="../lib/dompurify/purify.js"></script>

		<!-- visualEditor.sanitize -->
		<script src="../src/ve.sanitize.js"></script>

		<!-- visualEditor.core.utils.client -->
		<script src="../src/ve.utils.client.js"></script>

		<!-- visualEditor.core.root -->
		<script src="../src/ve.Range.js"></script>
		<script src="../src/ve.SelectionState.js"></script>
		<script src="../src/ve.Node.js"></script>
		<script src="../src/ve.PositionStep.js"></script>
		<script src="../src/ve.BranchNode.js"></script>
		<script src="../src/ve.LeafNode.js"></script>
		<script src="../src/ve.Document.js"></script>
		<script src="../src/ve.EventSequencer.js"></script>
		<script src="../src/ve.Scheduler.js"></script>

		<!-- visualEditor.core.model -->
		<script src="../src/dm/ve.dm.js"></script>
		<script src="../src/dm/ve.dm.Model.js"></script>
		<script src="../src/dm/ve.dm.ModelFactory.js"></script>
		<script src="../src/dm/ve.dm.ModelRegistry.js"></script>
		<script src="../src/dm/ve.dm.NodeFactory.js"></script>
		<script src="../src/dm/ve.dm.AnnotationFactory.js"></script>
		<script src="../src/dm/ve.dm.AnnotationSet.js"></script>
		<script src="../src/dm/ve.dm.ClassAttributeNode.js"></script>
		<script src="../src/dm/ve.dm.AlignableNode.js"></script>
		<script src="../src/dm/ve.dm.FocusableNode.js"></script>
		<script src="../src/dm/ve.dm.ResizableNode.js"></script>
		<script src="../src/dm/ve.dm.TableCellableNode.js"></script>
		<script src="../src/dm/ve.dm.Scalable.js"></script>
		<script src="../src/dm/ve.dm.Node.js"></script>
		<script src="../src/dm/ve.dm.BranchNode.js"></script>
		<script src="../src/dm/ve.dm.ContentBranchNode.js"></script>
		<script src="../src/dm/ve.dm.LeafNode.js"></script>
		<script src="../src/dm/ve.dm.Annotation.js"></script>
		<script src="../src/dm/ve.dm.InternalList.js"></script>
		<script src="../src/dm/ve.dm.MetaItem.js"></script>
		<script src="../src/dm/ve.dm.MetaList.js"></script>
		<script src="../src/dm/ve.dm.TableMatrix.js"></script>
		<script src="../src/dm/ve.dm.TransactionProcessor.js"></script>
		<script src="../src/dm/ve.dm.Transaction.js"></script>
		<script src="../src/dm/ve.dm.TransactionBuilder.js"></script>
		<script src="../src/dm/ve.dm.TransactionSquasher.js"></script>
		<script src="../src/dm/ve.dm.Change.js"></script>
		<script src="../src/dm/ve.dm.TreeCursor.js"></script>
		<script src="../src/dm/ve.dm.TreeModifier.js"></script>
		<script src="../src/dm/ve.dm.Selection.js"></script>
		<script src="../src/dm/ve.dm.Surface.js"></script>
		<script src="../src/dm/ve.dm.SurfaceFragment.js"></script>
		<script src="../src/dm/ve.dm.SourceSurfaceFragment.js"></script>
		<script src="../src/dm/ve.dm.DataString.js"></script>
		<script src="../src/dm/ve.dm.Document.js"></script>
		<script src="../src/dm/ve.dm.DocumentSlice.js"></script>
		<script src="../src/dm/ve.dm.TableSlice.js"></script>
		<script src="../src/dm/ve.dm.LinearData.js"></script>
		<script src="../src/dm/ve.dm.HashValueStore.js"></script>
		<script src="../src/dm/ve.dm.Converter.js"></script>
		<script src="../src/dm/ve.dm.SourceConverter.js"></script>
		<script src="../src/dm/selections/ve.dm.LinearSelection.js"></script>
		<script src="../src/dm/selections/ve.dm.NullSelection.js"></script>
		<script src="../src/dm/selections/ve.dm.TableSelection.js"></script>
		<script src="../src/dm/lineardata/ve.dm.FlatLinearData.js"></script>
		<script src="../src/dm/lineardata/ve.dm.ElementLinearData.js"></script>
		<script src="../src/dm/nodes/ve.dm.GeneratedContentNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.AlienNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.AlienBlockNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.AlienInlineNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.AlienTableCellNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.ArticleNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.BlockquoteNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.BreakNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.CenterNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.DefinitionListItemNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.DefinitionListNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.DivNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.DocumentNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.HeadingNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.HorizontalRuleNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.InternalItemNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.InternalListNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.ListItemNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.ListNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.ParagraphNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.PreformattedNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.SectionNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.TableCaptionNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.TableCellNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.TableNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.TableRowNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.TableSectionNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.TextNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.ImageNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.BlockImageNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.BlockImageCaptionNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.InlineImageNode.js"></script>
		<script src="../src/dm/annotations/ve.dm.LanguageAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.LinkAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.TextStyleAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.AbbreviationAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.BidiAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.BigAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.BoldAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.CodeSampleAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.CodeAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.DatetimeAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.DefinitionAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.DeleteAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.FontAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.HighlightAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.InsertAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.ItalicAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.QuotationAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.SmallAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.SpanAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.StrikethroughAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.SubscriptAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.SuperscriptAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.UnderlineAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.UserInputAnnotation.js"></script>
		<script src="../src/dm/annotations/ve.dm.VariableAnnotation.js"></script>
		<script src="../src/dm/metaitems/ve.dm.AlienMetaItem.js"></script>
		<script src="../src/dm/metaitems/ve.dm.RemovableAlienMetaItem.js"></script>
		<script src="../src/dm/metaitems/ve.dm.CommentMetaItem.js"></script>
		<script src="../src/dm/nodes/ve.dm.CommentNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.FakeCommentNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.RealCommentNode.js"></script>

		<!-- visualEditor.core.view -->
		<script src="../src/ce/ve.ce.js"></script>
		<script src="../src/ce/ve.ce.TextStateChunk.js"></script>
		<script src="../src/ce/ve.ce.TextState.js"></script>
		<script src="../src/ce/ve.ce.RangeState.js"></script>
		<script src="../src/ce/ve.ce.AnnotationFactory.js"></script>
		<script src="../src/ce/ve.ce.NodeFactory.js"></script>
		<script src="../src/ce/ve.ce.Document.js"></script>
		<script src="../src/ce/ve.ce.View.js"></script>
		<script src="../src/ce/ve.ce.Annotation.js"></script>
		<script src="../src/ce/ve.ce.Node.js"></script>
		<script src="../src/ce/ve.ce.BranchNode.js"></script>
		<script src="../src/ce/ve.ce.ContentBranchNode.js"></script>
		<script src="../src/ce/ve.ce.LeafNode.js"></script>
		<script src="../src/ce/ve.ce.MetaItem.js"></script>
		<script src="../src/ce/ve.ce.ClassAttributeNode.js"></script>
		<script src="../src/ce/ve.ce.AlignableNode.js"></script>
		<script src="../src/ce/ve.ce.FocusableNode.js"></script>
		<script src="../src/ce/ve.ce.ResizableNode.js"></script>
		<script src="../src/ce/ve.ce.TableCellableNode.js"></script>
		<script src="../src/ce/ve.ce.Selection.js"></script>
		<script src="../src/ce/ve.ce.Surface.js"></script>
		<script src="../src/ce/ve.ce.SurfaceObserver.js"></script>
		<script src="../src/ce/ve.ce.KeyDownHandlerFactory.js"></script>
		<script src="../src/ce/ve.ce.KeyDownHandler.js"></script>
		<script src="../src/ce/selections/ve.ce.LinearSelection.js"></script>
		<script src="../src/ce/selections/ve.ce.NullSelection.js"></script>
		<script src="../src/ce/selections/ve.ce.TableSelection.js"></script>
		<script src="../src/ce/keydownhandlers/ve.ce.LinearArrowKeyDownHandler.js"></script>
		<script src="../src/ce/keydownhandlers/ve.ce.LinearDeleteKeyDownHandler.js"></script>
		<script src="../src/ce/keydownhandlers/ve.ce.LinearEnterKeyDownHandler.js"></script>
		<script src="../src/ce/keydownhandlers/ve.ce.LinearEscapeKeyDownHandler.js"></script>
		<script src="../src/ce/keydownhandlers/ve.ce.TableArrowKeyDownHandler.js"></script>
		<script src="../src/ce/keydownhandlers/ve.ce.TableDeleteKeyDownHandler.js"></script>
		<script src="../src/ce/keydownhandlers/ve.ce.LinearTabKeyDownHandler.js"></script>
		<script src="../src/ce/nodes/ve.ce.GeneratedContentNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.ContentEditableNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.ActiveNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.AlienNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.AlienBlockNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.AlienInlineNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.AlienTableCellNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.ArticleNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.BlockquoteNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.BreakNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.CenterNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.CommentNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.DefinitionListItemNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.DefinitionListNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.DivNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.DocumentNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.HeadingNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.HorizontalRuleNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.InternalItemNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.InternalListNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.ListItemNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.ListNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.ParagraphNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.PreformattedNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.SectionNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.TableCaptionNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.TableCellNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.TableNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.TableRowNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.TableSectionNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.TextNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.UnrenderedNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.ImageNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.BlockImageNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.BlockImageCaptionNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.InlineImageNode.js"></script>
		<script src="../src/ce/annotations/ve.ce.NailedAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.LanguageAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.LinkAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.TextStyleAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.AbbreviationAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.BidiAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.BigAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.BoldAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.CodeAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.CodeSampleAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.DatetimeAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.DefinitionAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.DeleteAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.FontAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.HighlightAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.InsertAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.ItalicAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.QuotationAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.SmallAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.SpanAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.StrikethroughAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.SubscriptAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.SuperscriptAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.UnderlineAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.UserInputAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.VariableAnnotation.js"></script>

		<!-- visualEditor.core.ui -->
		<script src="../src/ui/ve.ui.js"></script>
		<script src="../src/ui/ve.ui.Overlay.js"></script>
		<script src="../src/ui/ve.ui.Surface.js"></script>
		<script src="../src/ui/ve.ui.Context.js"></script>
		<script src="../src/ui/contexts/ve.ui.LinearContext.js"></script>
		<script src="../src/ui/contexts/ve.ui.TableLineContext.js"></script>
		<script src="../src/ui/ve.ui.ModeledFactory.js"></script>
		<script src="../src/ui/ve.ui.ContextItem.js"></script>
		<script src="../src/ui/ve.ui.ContextItemFactory.js"></script>
		<script src="../src/ui/contextitems/ve.ui.LinearContextItem.js"></script>
		<script src="../src/ui/contextitems/ve.ui.AnnotationContextItem.js"></script>
		<script src="../src/ui/contextitems/ve.ui.TableLineContextItem.js"></script>
		<script src="../src/ui/contextitems/ve.ui.AlienContextItem.js"></script>
		<script src="../src/ui/contextitems/ve.ui.AlignableContextItem.js"></script>
		<script src="../src/ui/contextitems/ve.ui.CommentContextItem.js"></script>
		<script src="../src/ui/contextitems/ve.ui.LanguageContextItem.js"></script>
		<script src="../src/ui/contextitems/ve.ui.LinkContextItem.js"></script>
		<script src="../src/ui/contextitems/ve.ui.ToolContextItem.js"></script>
		<script src="../src/ui/contextitems/ve.ui.TableContextItem.js"></script>
		<script src="../src/ui/contextitems/ve.ui.MergeCellsContextItem.js"></script>
		<script src="../src/ui/contextitems/ve.ui.SumCellsContextItem.js"></script>
		<script src="../src/ui/ve.ui.Tool.js"></script>
		<script src="../src/ui/ve.ui.Toolbar.js"></script>
		<script src="../src/ui/ve.ui.TargetToolbar.js"></script>
		<script src="../src/ui/ve.ui.PositionedTargetToolbar.js"></script>
		<script src="../src/ui/ve.ui.ToolFactory.js"></script>
		<script src="../src/ui/ve.ui.Command.js"></script>
		<script src="../src/ui/ve.ui.CommandRegistry.js"></script>
		<script src="../src/ui/ve.ui.CommandHelpRegistry.js"></script>
		<script src="../src/ui/ve.ui.Trigger.js"></script>
		<script src="../src/ui/ve.ui.TriggerRegistry.js"></script>
		<script src="../src/ui/ve.ui.Sequence.js"></script>
		<script src="../src/ui/ve.ui.SequenceRegistry.js"></script>
		<script src="../src/ui/ve.ui.Action.js"></script>
		<script src="../src/ui/ve.ui.ActionFactory.js"></script>
		<script src="../src/ui/ve.ui.DataTransferHandler.js"></script>
		<script src="../src/ui/ve.ui.FileTransferHandler.js"></script>
		<script src="../src/ui/ve.ui.DataTransferHandlerFactory.js"></script>
		<script src="../src/ui/ve.ui.DataTransferItem.js"></script>
		<script src="../src/ui/ve.ui.WindowManager.js"></script>
		<script src="../src/ui/ve.ui.FragmentWindow.js"></script>
		<script src="../src/ui/ve.ui.NodeWindow.js"></script>
		<script src="../src/ui/ve.ui.TabIndexScope.js"></script>
		<script src="../src/ui/windowmanagers/ve.ui.SurfaceWindowManager.js"></script>
		<script src="../src/ui/actions/ve.ui.AnnotationAction.js"></script>
		<script src="../src/ui/actions/ve.ui.BlockquoteAction.js"></script>
		<script src="../src/ui/actions/ve.ui.CompletionAction.js"></script>
		<script src="../src/ui/actions/ve.ui.ContentAction.js"></script>
		<script src="../src/ui/actions/ve.ui.FormatAction.js"></script>
		<script src="../src/ui/actions/ve.ui.HistoryAction.js"></script>
		<script src="../src/ui/actions/ve.ui.IndentationAction.js"></script>
		<script src="../src/ui/actions/ve.ui.LinkAction.js"></script>
		<script src="../src/ui/actions/ve.ui.ListAction.js"></script>
		<script src="../src/ui/actions/ve.ui.TableAction.js"></script>
		<script src="../src/ui/actions/ve.ui.WindowAction.js"></script>
		<script src="../src/ui/commands/ve.ui.ClearAnnotationCommand.js"></script>
		<script src="../src/ui/commands/ve.ui.HistoryCommand.js"></script>
		<script src="../src/ui/commands/ve.ui.IndentationCommand.js"></script>
		<script src="../src/ui/commands/ve.ui.MergeCellsCommand.js"></script>
		<script src="../src/ui/dialogs/ve.ui.FragmentDialog.js"></script>
		<script src="../src/ui/dialogs/ve.ui.NodeDialog.js"></script>
		<script src="../src/ui/dialogs/ve.ui.ToolbarDialog.js"></script>
		<script src="../src/ui/dialogs/ve.ui.CommandHelpDialog.js"></script>
		<script src="../src/ui/dialogs/ve.ui.FindAndReplaceDialog.js"></script>
		<script src="../src/ui/dialogs/ve.ui.ProgressDialog.js"></script>
		<script src="../src/ui/dialogs/ve.ui.SpecialCharacterDialog.js"></script>
		<script src="../src/ui/dialogs/ve.ui.TableDialog.js"></script>
		<script src="../src/ui/datatransferhandlers/ve.ui.HTMLStringTransferHandler.js"></script>
		<script src="../src/ui/datatransferhandlers/ve.ui.PlainTextStringTransferHandler.js"></script>
		<script src="../src/ui/datatransferhandlers/ve.ui.DSVFileTransferHandler.js"></script>
		<script src="../src/ui/datatransferhandlers/ve.ui.PlainTextFileTransferHandler.js"></script>
		<script src="../src/ui/datatransferhandlers/ve.ui.HTMLFileTransferHandler.js"></script>
		<script src="../src/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.js"></script>
		<script src="../src/ui/elements/ve.ui.PreviewElement.js"></script>
		<script src="../src/ui/windowmanagers/ve.ui.ToolbarDialogWindowManager.js"></script>
		<script src="../src/ui/widgets/ve.ui.AlignWidget.js"></script>
		<script src="../src/ui/widgets/ve.ui.LanguageSearchWidget.js"></script>
		<script src="../src/ui/widgets/ve.ui.LanguageResultWidget.js"></script>
		<script src="../src/ui/dialogs/ve.ui.LanguageSearchDialog.js"></script>
		<script src="../src/ui/widgets/ve.ui.LanguageInputWidget.js"></script>
		<script src="../src/ui/widgets/ve.ui.TargetWidget.js"></script>
		<script src="../src/ui/widgets/ve.ui.LinkAnnotationWidget.js"></script>
		<script src="../src/ui/widgets/ve.ui.CompletionWidget.js"></script>
		<script src="../src/ui/widgets/ve.ui.ContextSelectWidget.js"></script>
		<script src="../src/ui/widgets/ve.ui.ContextOptionWidget.js"></script>
		<script src="../src/ui/widgets/ve.ui.DimensionsWidget.js"></script>
		<script src="../src/ui/widgets/ve.ui.MediaSizeWidget.js"></script>
		<script src="../src/ui/widgets/ve.ui.NoFocusButtonWidget.js"></script>
		<script src="../src/ui/widgets/ve.ui.WhitespacePreservingTextInputWidget.js"></script>
		<script src="../src/ui/tools/ve.ui.AnnotationTool.js"></script>
		<script src="../src/ui/tools/ve.ui.ChangeDirectionalityTool.js"></script>
		<script src="../src/ui/tools/ve.ui.ClearAnnotationTool.js"></script>
		<script src="../src/ui/tools/ve.ui.WindowTool.js"></script>
		<script src="../src/ui/tools/ve.ui.FragmentWindowTool.js"></script>
		<script src="../src/ui/tools/ve.ui.FragmentInspectorTool.js"></script>
		<script src="../src/ui/tools/ve.ui.LinkInspectorTool.js"></script>
		<script src="../src/ui/tools/ve.ui.CommentInspectorTool.js"></script>
		<script src="../src/ui/tools/ve.ui.ToolbarDialogTool.js"></script>
		<script src="../src/ui/tools/ve.ui.FormatTool.js"></script>
		<script src="../src/ui/tools/ve.ui.HistoryTool.js"></script>
		<script src="../src/ui/tools/ve.ui.IndentationTool.js"></script>
		<script src="../src/ui/tools/ve.ui.LanguageInspectorTool.js"></script>
		<script src="../src/ui/tools/ve.ui.ListTool.js"></script>
		<script src="../src/ui/tools/ve.ui.TableTool.js"></script>
		<script src="../src/ui/inspectors/ve.ui.FragmentInspector.js"></script>
		<script src="../src/ui/inspectors/ve.ui.AnnotationInspector.js"></script>
		<script src="../src/ui/inspectors/ve.ui.NodeInspector.js"></script>
		<script src="../src/ui/inspectors/ve.ui.LinkAnnotationInspector.js"></script>
		<script src="../src/ui/inspectors/ve.ui.CommentInspector.js"></script>
		<script src="../src/ui/inspectors/ve.ui.LanguageInspector.js"></script>
		<script src="../src/ui/pages/ve.ui.SpecialCharacterPage.js"></script>

		<!-- treeDiffer -->
		<script src="../lib/treeDiffer/treeDiffer-dist.js"></script>

		<!-- diffMatchPatch -->
		<script src="../lib/diff-match-patch/diff_match_patch_uncompressed.js"></script>

		<!-- visualEditor.diffing -->
		<script src="../src/ve.DiffTreeNode.js"></script>
		<script src="../src/ve.DiffMatchPatch.js"></script>
		<script src="../src/dm/ve.dm.VisualDiff.js"></script>
		<script src="../src/ui/elements/ve.ui.DiffElement.js"></script>
		<script src="../src/ui/widgets/ve.ui.ChangeDescriptionsSelectWidget.js"></script>

		<!-- visualEditor.diffing.standalone -->
		<script src="../src/ui/dialogs/ve.ui.DiffDialog.js"></script>

		<!-- visualEditor.standalone.build -->
		<script src="../src/init/sa/ve.init.sa.js"></script>
		<script src="../src/init/sa/ve.init.sa.SafeStorage.js"></script>
		<script src="../src/init/sa/ve.init.sa.Platform.js"></script>
		<script src="../src/init/sa/ve.init.sa.Target.js"></script>

		<!-- visualEditor.desktop.build -->
		<script src="../src/ui/contexts/ve.ui.DesktopContext.js"></script>
		<script src="../src/ui/windowmanagers/ve.ui.DesktopInspectorWindowManager.js"></script>

		<!-- visualEditor.desktop.standalone -->
		<script src="../src/init/sa/ve.init.sa.DesktopTarget.js"></script>

		<!-- socket.io -->
		<script src="../lib/socket.io-client/socket.io.min.js"></script>

		<!-- color-picker -->
		<script src="../lib/color-picker/color-picker.js"></script>

		<!-- visualEditor.commentAnnotation -->
		<script src="../src/dm/annotations/ve.dm.CommentAnnotation.js"></script>
		<script src="../src/ce/annotations/ve.ce.CommentAnnotation.js"></script>
		<script src="../src/ui/contextitems/ve.ui.CommentAnnotationContextItem.js"></script>
		<script src="../src/ui/tools/ve.ui.CommentAnnotationInspectorTool.js"></script>
		<script src="../src/ui/inspectors/ve.ui.CommentAnnotationInspector.js"></script>

		<!-- visualEditor.checkList -->
		<script src="../src/dm/nodes/ve.dm.CheckListNode.js"></script>
		<script src="../src/dm/nodes/ve.dm.CheckListItemNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.CheckListNode.js"></script>
		<script src="../src/ce/nodes/ve.ce.CheckListItemNode.js"></script>
		<script src="../src/ui/tools/ve.ui.CheckListTool.js"></script>

		<!-- visualEditor.rebase -->
		<script src="../src/dm/ve.dm.RebaseClient.js"></script>
		<script src="../src/dm/ve.dm.SurfaceSynchronizer.js"></script>
		<script src="../src/ui/widgets/ve.ui.AuthorItemWidget.js"></script>
		<script src="../src/ui/tools/ve.ui.AuthorListPopupTool.js"></script>

		<!-- visualEditor.test -->
		<script src="../src/ve.freeze.js"></script>
		<script src="../rebaser/src/dm/ve.dm.RebaseDocState.js"></script>
		<script src="../rebaser/src/dm/ve.dm.RebaseServer.js"></script>
		<script src="../rebaser/src/dm/ve.dm.DocumentStore.js"></script>
		<script src="../rebaser/src/dm/ve.dm.ProtocolServer.js"></script>
		<script src="../rebaser/src/dm/ve.dm.TransportServer.js"></script>
		<script src="../tests/ve.qunit.js"></script>
		<script src="../tests/ve.qunit.local.js"></script>
		<script src="../tests/ve.test.utils.js"></script>
		<script src="../tests/ve.test.js"></script>
		<script src="../tests/ve.EventSequencer.test.js"></script>
		<script src="../tests/ve.Scheduler.test.js"></script>
		<script src="../tests/ve.Range.test.js"></script>
		<script src="../tests/ve.Document.test.js"></script>
		<script src="../tests/ve.Node.test.js"></script>
		<script src="../tests/ve.BranchNode.test.js"></script>
		<script src="../tests/ve.LeafNode.test.js"></script>
		<script src="../tests/dm/ve.dm.example.js"></script>
		<script src="../tests/dm/ve.dm.Annotation.test.js"></script>
		<script src="../tests/dm/ve.dm.AnnotationSet.test.js"></script>
		<script src="../tests/dm/ve.dm.LinkAnnotation.test.js"></script>
		<script src="../tests/dm/ve.dm.NodeFactory.test.js"></script>
		<script src="../tests/dm/ve.dm.Node.test.js"></script>
		<script src="../tests/dm/ve.dm.Converter.test.js"></script>
		<script src="../tests/dm/ve.dm.SourceConverter.test.js"></script>
		<script src="../tests/dm/ve.dm.BranchNode.test.js"></script>
		<script src="../tests/dm/ve.dm.LeafNode.test.js"></script>
		<script src="../tests/dm/nodes/ve.dm.TextNode.test.js"></script>
		<script src="../tests/dm/ve.dm.Document.test.js"></script>
		<script src="../tests/dm/ve.dm.HashValueStore.test.js"></script>
		<script src="../tests/dm/ve.dm.InternalList.test.js"></script>
		<script src="../tests/dm/ve.dm.LinearData.test.js"></script>
		<script src="../tests/dm/ve.dm.Transaction.test.js"></script>
		<script src="../tests/dm/ve.dm.TransactionBuilder.test.js"></script>
		<script src="../tests/dm/ve.dm.TransactionSquasher.test.js"></script>
		<script src="../tests/dm/ve.dm.Change.test.js"></script>
		<script src="../tests/dm/ve.dm.TestRebaseClient.js"></script>
		<script src="../tests/dm/ve.dm.TestRebaseServer.js"></script>
		<script src="../tests/dm/ve.dm.RebaseServer.test.js"></script>
		<script src="../tests/dm/ve.dm.FakeMongo.js"></script>
		<script src="../tests/dm/ve.dm.FakeSocket.js"></script>
		<script src="../tests/dm/ve.dm.DocumentStore.test.js"></script>
		<script src="../tests/dm/ve.dm.TransportServer.test.js"></script>
		<script src="../tests/dm/ve.dm.TreeModifier.test.js"></script>
		<script src="../tests/dm/ve.dm.TransactionProcessor.test.js"></script>
		<script src="../tests/dm/ve.dm.Surface.test.js"></script>
		<script src="../tests/dm/ve.dm.SurfaceFragment.test.js"></script>
		<script src="../tests/dm/ve.dm.SourceSurfaceFragment.test.js"></script>
		<script src="../tests/dm/ve.dm.ModelRegistry.test.js"></script>
		<script src="../tests/dm/ve.dm.MetaList.test.js"></script>
		<script src="../tests/dm/ve.dm.Scalable.test.js"></script>
		<script src="../tests/dm/selections/ve.dm.LinearSelection.test.js"></script>
		<script src="../tests/dm/selections/ve.dm.NullSelection.test.js"></script>
		<script src="../tests/dm/selections/ve.dm.TableSelection.test.js"></script>
		<script src="../tests/dm/lineardata/ve.dm.FlatLinearData.test.js"></script>
		<script src="../tests/dm/lineardata/ve.dm.ElementLinearData.test.js"></script>
		<script src="../tests/ce/ve.ce.test.js"></script>
		<script src="../tests/ce/ve.ce.Document.test.js"></script>
		<script src="../tests/ce/ve.ce.Surface.test.js"></script>
		<script src="../tests/ce/ve.ce.RangeState.test.js"></script>
		<script src="../tests/ce/ve.ce.TextState.test.js"></script>
		<script src="../tests/ce/ve.ce.NodeFactory.test.js"></script>
		<script src="../tests/ce/ve.ce.AnnotationFactory.test.js"></script>
		<script src="../tests/ce/ve.ce.Node.test.js"></script>
		<script src="../tests/ce/ve.ce.BranchNode.test.js"></script>
		<script src="../tests/ce/ve.ce.ContentBranchNode.test.js"></script>
		<script src="../tests/ce/ve.ce.LeafNode.test.js"></script>
		<script src="../tests/ce/ve.ce.Selection.test.js"></script>
		<script src="../tests/ce/keydownhandlers/ve.ce.LinearArrowKeyDownHandler.test.js"></script>
		<script src="../tests/ce/keydownhandlers/ve.ce.LinearDeleteKeyDownHandler.test.js"></script>
		<script src="../tests/ce/keydownhandlers/ve.ce.LinearEnterKeyDownHandler.test.js"></script>
		<script src="../tests/ce/keydownhandlers/ve.ce.LinearEscapeKeyDownHandler.test.js"></script>
		<script src="../tests/ce/keydownhandlers/ve.ce.TableArrowKeyDownHandler.test.js"></script>
		<script src="../tests/ce/keydownhandlers/ve.ce.TableDeleteKeyDownHandler.test.js"></script>
		<script src="../tests/ce/keydownhandlers/ve.ce.TableEnterKeyDownHandler.test.js"></script>
		<script src="../tests/ce/keydownhandlers/ve.ce.TableF2KeyDownHandler.test.js"></script>
		<script src="../tests/ce/nodes/ve.ce.ResizableNode.test.js"></script>
		<script src="../tests/ce/nodes/ve.ce.TextNode.test.js"></script>
		<script src="../tests/ce/nodes/ve.ce.TableNode.test.js"></script>
		<script src="../tests/init/ve.init.sa.Platform.test.js"></script>
		<script src="../tests/ui/ve.ui.DataTransferHandlerFactory.test.js"></script>
		<script src="../tests/ui/ve.ui.Trigger.test.js"></script>
		<script src="../tests/ui/ve.ui.Sequence.test.js"></script>
		<script src="../tests/ui/ve.ui.DiffElement.test.js"></script>
		<script src="../tests/ui/ve.ui.PreviewElement.test.js"></script>
		<script src="../tests/ui/actions/ve.ui.AnnotationAction.test.js"></script>
		<script src="../tests/ui/actions/ve.ui.BlockquoteAction.test.js"></script>
		<script src="../tests/ui/actions/ve.ui.ContentAction.test.js"></script>
		<script src="../tests/ui/actions/ve.ui.FormatAction.test.js"></script>
		<script src="../tests/ui/actions/ve.ui.IndentationAction.test.js"></script>
		<script src="../tests/ui/actions/ve.ui.LinkAction.test.js"></script>
		<script src="../tests/ui/actions/ve.ui.ListAction.test.js"></script>
		<script src="../tests/ui/actions/ve.ui.TableAction.test.js"></script>
		<script src="../tests/ui/actions/ve.ui.WindowAction.test.js"></script>
		<script src="../tests/ui/datatransferhandlers/ve.ui.DSVFileTransferHandler.test.js"></script>
		<script src="../tests/ui/datatransferhandlers/ve.ui.UrlStringTransferHandler.test.js"></script>
		<script src="../tests/ui/dialogs/ve.ui.FindAndReplaceDialog.test.js"></script>
		<script src="../tests/ui/inspectors/ve.ui.FragmentInspector.test.js"></script>
		<script src="../tests/ce/ve.ce.TestRunner.js"></script>
		<script src="../tests/ce/ve.ce.imetests.test.js"></script>
		<script src="../tests/ce/imetests/backspace-chromium-ubuntu-none.js"></script>
		<script src="../tests/ce/imetests/backspace-firefox-ubuntu-none.js"></script>
		<script src="../tests/ce/imetests/backspace-ie9-win7-none.js"></script>
		<script src="../tests/ce/imetests/home-firefox-win7-none.js"></script>
		<script src="../tests/ce/imetests/input-chrome-mac-native-japanese-hiragana.js"></script>
		<script src="../tests/ce/imetests/input-chrome-mac-native-japanese-katakana.js"></script>
		<script src="../tests/ce/imetests/input-chrome-win7-chinese-traditional-handwriting.js"></script>
		<script src="../tests/ce/imetests/input-chrome-win7-greek.js"></script>
		<script src="../tests/ce/imetests/input-chrome-win7-polish.js"></script>
		<script src="../tests/ce/imetests/input-chrome-win7-welsh.js"></script>
		<script src="../tests/ce/imetests/input-chromium-ubuntu-ibus-chinese-cantonese.js"></script>
		<script src="../tests/ce/imetests/input-chromium-ubuntu-ibus-japanese-anthy--hiraganaonly.js"></script>
		<script src="../tests/ce/imetests/input-chromium-ubuntu-ibus-japanese-mozc.js"></script>
		<script src="../tests/ce/imetests/input-chromium-ubuntu-ibus-korean-korean.js"></script>
		<script src="../tests/ce/imetests/input-chromium-ubuntu-ibus-malayalam-swanalekha.js"></script>
		<script src="../tests/ce/imetests/input-firefox-mac-native-japanese-hiragana.js"></script>
		<script src="../tests/ce/imetests/input-firefox-mac-native-japanese-katakana.js"></script>
		<script src="../tests/ce/imetests/input-firefox-ubuntu-ibus-chinese-cantonese.js"></script>
		<script src="../tests/ce/imetests/input-firefox-ubuntu-ibus-japanese-anthy--hiraganaonly.js"></script>
		<script src="../tests/ce/imetests/input-firefox-ubuntu-ibus-japanese-mozc.js"></script>
		<script src="../tests/ce/imetests/input-firefox-ubuntu-ibus-korean-korean.js"></script>
		<script src="../tests/ce/imetests/input-firefox-ubuntu-ibus-malayalam.swanalekha.js"></script>
		<script src="../tests/ce/imetests/input-firefox-win7-chinese-traditional-handwriting.js"></script>
		<script src="../tests/ce/imetests/input-firefox-win7-greek.js"></script>
		<script src="../tests/ce/imetests/input-firefox-win7-welsh.js"></script>
		<script src="../tests/ce/imetests/input-ie9-win7-chinese-traditional-handwriting.js"></script>
		<script src="../tests/ce/imetests/input-ie9-win7-greek.js"></script>
		<script src="../tests/ce/imetests/input-ie9-win7-korean.js"></script>
		<script src="../tests/ce/imetests/input-ie9-win7-welsh.js"></script>
		<script src="../tests/ce/imetests/input-ie11-win8.1-korean.js"></script>
		<script src="../tests/ce/imetests/input-safari-mac-native-japanese-hiragana.js"></script>
		<script src="../tests/ce/imetests/input-safari-mac-native-japanese-katakana.js"></script>
		<script src="../tests/ce/imetests/leftarrow-chromium-ubuntu-none.js"></script>
		<script src="../tests/ce/imetests/leftarrow-firefox-ubuntu-none.js"></script>
		<script src="../tests/ce/imetests/leftarrow-ie9-win7-none.js"></script>

	</body>
</html>
